package com.example.viewmodel_lifecycle_livedata.lifecycle

import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.viewmodel_lifecycle_livedata.R

/**
 * 1.简单实现
 * (1)观察者：自定义类继承LifecycleObserver，定义@OnLifecycleEvent注解方法
   (2)被观察者：activity/fragment 继承了LifecycleOwner
 * (3)关系：LifecycleRegistry.addObserver(观察者)：观察者能够订阅被观察者生命周期的变化
 * 2.原理剖析
 * (1)addObserver()将观察者存储到mObserverdMap集合中，里面存放每个观察者，每个观察者mInfo属性，mInfo存储的每个观察者注解方法实例(反射)
 * (2)感知生命周期：activity被创建的时候同时创建一个空白的fragment，感知activity的生命周期，dispatch分发对应生命周期（空白fragment卧底）
 * (3)dispatcch分发生命周期：遍历mObserverdMap集合，拿到每个观察者，再拿里面mInfo，判断对应的生命周期方法，通过反射执行此方法，结束。
 */
//被观察者LifecycleOwner
class LifecycleActivity : AppCompatActivity() {
    private lateinit var myObserver:MyObserver

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_lifecycle)
        myObserver = MyObserver()
        //添加观察者=---》被观察者
        lifecycle.addObserver(myObserver)


    }
//
//    override fun onResume() {
//        super.onResume()
//
//    }
//
//    override fun onPause() {
//        super.onPause()
//
//    }
//
//    override fun onDestroy() {
//        super.onDestroy()
//
//    }
}